﻿
Imports Microsoft.VisualBasic
Imports Comunes
Imports System.Data
Imports System.Xml

Public Class cls_perfilesApp

    Dim v_obj_wsService As New Service.Service
    Dim v_obj_clsParametros As New Parametros()
    Dim v_obj_clsLibreria As New clsLibreria()
    Dim v_dts_respuesta As New DataSet
    Dim v_obj_json As New clsJsonSR.clsJsonSR()
    Dim v_obj_clsErrores As New cls_errores()
    Dim v_str_keyConn As String = System.Configuration.ConfigurationManager.AppSettings.Get("KeyConexion")
    Dim v_str_glsError As String = ""
    Dim v_str_srcError As String = ""
    Dim v_str_wsError As String = ""
    Dim v_str_metError As String = ""
    Dim v_str_numError As String = ""
    

    'Dim Param As New Comunes.Parametros
    'Dim objLib As New clsLibreria
    'Dim objWS As New Service.Service
    'Dim objJSon As New jSon()

    'Dim MiDs As New DataSet
    'Dim StrKeyConn As String = System.Configuration.ConfigurationManager.AppSettings.Get("KeyConexion")
    'Dim GlsError As String = "", SrcError As String = "", WsError As String = "", MetError As String = "", NumError As String = ""

    Private _PEPE_NOMBRE As String
    Private _ESES_NID As String
    Private _PEPE_NID As String
    Private _p_arr_accmenu As String()

    Private _cantPagina As Integer
    Private _numPagina As Integer

    Sub New()
        _PEPE_NOMBRE = ""
        _ESES_NID = ""
        _PEPE_NID = ""
        _cantPagina = 50
        _numPagina = 0
        _p_arr_accmenu = Nothing

    End Sub

    Public Property PEPE_NOMBRE() As String
        Get
            Return _PEPE_NOMBRE
        End Get
        Set(ByVal value As String)
            _PEPE_NOMBRE = value
        End Set
    End Property

    Public Property ESES_NID() As String
        Get
            Return _ESES_NID
        End Get
        Set(ByVal value As String)
            _ESES_NID = value
        End Set
    End Property

    Public Property PEPE_NID() As String
        Get
            Return _PEPE_NID
        End Get
        Set(ByVal value As String)
            _PEPE_NID = value
        End Set
    End Property
    Public Property cantPagina() As Integer
        Get
            Return _cantPagina
        End Get
        Set(ByVal value As Integer)
            _cantPagina = value
        End Set
    End Property
    Public Property numPagina() As Integer
        Get
            Return _numPagina
        End Get
        Set(ByVal value As Integer)
            _numPagina = value
        End Set
    End Property

    Public Property p_arr_accmenu() As String()
        Get
            Return _p_arr_accmenu
        End Get
        Set(ByVal value As String())
            _p_arr_accmenu = value
        End Set
    End Property

    Public Function listarVigenciaPerfil() As String
        Dim v_str_respuestaJson As String = ""
        Try
            v_obj_clsErrores.id = 0
            v_obj_clsErrores.desc = ""
            v_obj_clsErrores.metodo = "listarVigenciaPerfil"
            v_obj_clsErrores.clase = "cls_perfilesApp"
            v_dts_respuesta = v_obj_wsService.EjecutarSinParametros(v_str_keyConn, "SPBS_OBTIENE_TIPO_VIGENCIA")
            If v_obj_clsLibreria.RevisaErrores(v_dts_respuesta, v_str_glsError, v_str_srcError, v_str_wsError, v_str_metError, v_str_numError) = "0" Then
                v_str_respuestaJson = v_obj_json.listaParaCombobox(True, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            Else
                v_obj_clsErrores.id = v_str_numError
                v_obj_clsErrores.desc = v_str_glsError
                v_obj_clsErrores.registraErrorEnLog()
                v_str_respuestaJson = v_obj_json.listaParaCombobox(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            End If
        Catch ex As Exception
            v_obj_clsErrores.id = -1000
            v_obj_clsErrores.desc = ex.Message
            v_obj_clsErrores.registraErrorEnLog()
            v_str_respuestaJson = v_obj_json.listaParaCombobox(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
        End Try
        Return V_str_respuestaJson
    End Function

    Public Function listarPerfiles() As String
        Dim v_str_respuestaJson As String = ""
        Try
            v_obj_clsErrores.id = 0
            v_obj_clsErrores.desc = ""
            v_obj_clsErrores.metodo = "listarPerfiles"
            v_obj_clsErrores.clase = "cls_perfilesApp"
            v_obj_clsParametros.Limpiar()
            v_obj_clsParametros.Agregar("p_cantpag", Me._cantPagina)
            v_obj_clsParametros.Agregar("p_numPag", Me._numPagina)
            v_dts_respuesta = v_obj_wsService.EjecutarConParametroXML(v_str_keyConn, v_obj_clsParametros.GeneraDocXML("parametros"), "SPBS_PEPE_LISTA_PERFILES")
            If v_obj_clsLibreria.RevisaErrores(v_dts_respuesta, v_str_glsError, v_str_srcError, v_str_wsError, v_str_metError, v_str_numError) = "0" Then
                v_str_respuestaJson = v_obj_json.listaParaGrilla(True, v_dts_respuesta.Tables(0).Rows(0).Item(0), v_dts_respuesta.Tables(1), v_obj_clsErrores)
            Else
                v_obj_clsErrores.id = v_str_numError
                v_obj_clsErrores.desc = v_str_glsError
                v_obj_clsErrores.registraErrorEnLog()
                v_str_respuestaJson = v_obj_json.listaParaGrilla(False, 0, v_dts_respuesta, v_obj_clsErrores)
            End If
        Catch ex As Exception
            v_obj_clsErrores.id = -1000
            v_obj_clsErrores.desc = ex.Message
            v_obj_clsErrores.registraErrorEnLog()
            v_str_respuestaJson = v_obj_json.listaParaGrilla(False, 0, v_dts_respuesta, v_obj_clsErrores)
        Finally
            v_dts_respuesta = Nothing
            v_obj_clsParametros.Dispose()
            v_obj_clsParametros = Nothing
            v_obj_wsService.Dispose()
            v_obj_wsService = Nothing
            v_obj_clsLibreria.Dispose()
            v_obj_clsLibreria = Nothing
        End Try
        Return v_str_respuestaJson
    End Function

    Public Function guardarNuevoPerfil() As String
        Dim v_str_respuestaJson As String = ""
        Dim sw As Integer = 0
        Dim p_str_nid_perfil As Integer
        Try
            v_obj_clsErrores.id = 0
            v_obj_clsErrores.desc = ""
            v_obj_clsErrores.metodo = "listarPerfiles"
            v_obj_clsErrores.clase = "guardarNuevoPerfil"
            v_obj_clsParametros.Limpiar()
            v_obj_clsParametros.Agregar("p_int_nid_perfil", Me._PEPE_NID)
            v_obj_clsParametros.Agregar("p_str_nombre", Me._PEPE_NOMBRE)
            v_obj_clsParametros.Agregar("p_int_nid_estado", Me._ESES_NID)
            v_dts_respuesta = v_obj_wsService.EjecutarConParametroXML(v_str_keyConn, v_obj_clsParametros.GeneraDocXML("parametros"), "SPBS_PEPE_GRABA_PERFIL")
            If v_obj_clsLibreria.RevisaErrores(v_dts_respuesta, v_str_glsError, v_str_srcError, v_str_wsError, v_str_metError, v_str_numError) = "0" Then
                If v_dts_respuesta.Tables(0).Rows(0).Item("NUM_ERROR") = 0 Then
                    p_str_nid_perfil = v_dts_respuesta.Tables(0).Rows(0).Item("PEPE_NID")
                    v_str_respuestaJson = v_obj_json.respuestaFormularioJson(True, v_dts_respuesta.Tables(0), v_obj_clsErrores)
                    For Each p_acc As String In p_arr_accmenu
                        v_obj_clsParametros.Limpiar()
                        v_obj_clsParametros.Agregar("p_int_nid_perfil", p_str_nid_perfil)
                        v_obj_clsParametros.Agregar("p_int_nid_menu", p_acc)
                        v_obj_clsParametros.Agregar("p_int_sw", sw)
                        v_dts_respuesta = v_obj_wsService.EjecutarConParametroXML(v_str_keyConn, v_obj_clsParametros.GeneraDocXML("parametros"), "SPBS_ACAC_GRABA_ACCESOS_MENU_PRINCIPAL")
                        If v_obj_clsLibreria.RevisaErrores(v_dts_respuesta, v_str_glsError, v_str_srcError, v_str_wsError, v_str_metError, v_str_numError) = "0" Then
                            v_str_respuestaJson = v_obj_json.respuestaFormularioJson(True, v_dts_respuesta.Tables(0), v_obj_clsErrores)
                        Else
                            v_obj_clsErrores.id = v_str_numError
                            v_obj_clsErrores.desc = v_str_glsError
                            v_obj_clsErrores.registraErrorEnLog()
                            v_str_respuestaJson = v_obj_json.respuestaFormularioJson(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
                        End If
                        sw = 1
                    Next
                Else
                    v_obj_clsErrores.id = v_dts_respuesta.Tables(0).Rows(0).Item("NUM_ERROR")
                    v_obj_clsErrores.desc = v_dts_respuesta.Tables(0).Rows(0).Item("GLS_ERROR")
                    v_str_respuestaJson = v_obj_json.respuestaFormularioJson(True, v_dts_respuesta.Tables(0), v_obj_clsErrores)
                End If
            Else
                v_obj_clsErrores.id = v_str_numError
                v_obj_clsErrores.desc = v_str_glsError
                v_obj_clsErrores.registraErrorEnLog()
                v_str_respuestaJson = v_obj_json.respuestaFormularioJson(True, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            End If
        Catch ex As Exception
            v_obj_clsErrores.id = -1000
            v_obj_clsErrores.desc = ex.Message
            v_obj_clsErrores.registraErrorEnLog()
            v_str_respuestaJson = v_obj_json.respuestaFormularioJson(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
        Finally
            v_dts_respuesta = Nothing
            v_obj_clsParametros.Dispose()
            v_obj_clsParametros = Nothing
            v_obj_wsService.Dispose()
            v_obj_wsService = Nothing
            v_obj_clsLibreria.Dispose()
            v_obj_clsLibreria = Nothing
        End Try
        Return v_str_respuestaJson
    End Function

    Public Function eliminarPerfil() As String
        Dim v_str_respuestaJson As String = ""
        Try
            v_obj_clsErrores.id = 0
            v_obj_clsErrores.desc = ""
            v_obj_clsErrores.metodo = "eliminarPerfil"
            v_obj_clsErrores.clase = "cls_perfilesApp"
            v_obj_clsParametros.Limpiar()
            v_obj_clsParametros.Agregar("p_int_nid_perfil", Me._PEPE_NID)
            v_dts_respuesta = v_obj_wsService.EjecutarConParametroXML(v_str_keyConn, v_obj_clsParametros.GeneraDocXML("parametros"), "SPBS_PEPE_ELIMINA_PERFIL")
            If v_obj_clsLibreria.RevisaErrores(v_dts_respuesta, v_str_glsError, v_str_srcError, v_str_wsError, v_str_metError, v_str_numError) = "0" Then
                v_str_respuestaJson = v_obj_json.respuestaFormularioJson(True, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            Else
                v_obj_clsErrores.id = v_str_numError
                v_obj_clsErrores.desc = v_str_glsError
                v_obj_clsErrores.registraErrorEnLog()
                v_str_respuestaJson = v_obj_json.respuestaFormularioJson(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            End If
        Catch ex As Exception
            v_obj_clsErrores.id = -1000
            v_obj_clsErrores.desc = ex.Message
            v_obj_clsErrores.registraErrorEnLog()
            v_str_respuestaJson = v_obj_json.respuestaFormularioJson(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
        Finally
            v_dts_respuesta = Nothing
            v_obj_clsParametros.Dispose()
            v_obj_clsParametros = Nothing
            v_obj_wsService.Dispose()
            v_obj_wsService = Nothing
            v_obj_clsLibreria.Dispose()
            v_obj_clsLibreria = Nothing
        End Try
        Return v_str_respuestaJson
    End Function

    Public Function listarMenuPrincipalCheckbox() As String
        Dim v_str_respuestaJson As String = ""
        Try
            v_obj_clsErrores.id = 0
            v_obj_clsErrores.desc = ""
            v_obj_clsErrores.metodo = "listarMenuPrincipalCheckbox"
            v_obj_clsErrores.clase = "cls_perfilesApp"
            v_obj_clsParametros.Limpiar()
            v_obj_clsParametros.Agregar("p_int_nid_perfil", Me._PEPE_NID)
            v_dts_respuesta = v_obj_wsService.EjecutarConParametroXML(v_str_keyConn, v_obj_clsParametros.GeneraDocXML("parametros"), "SPBS_ACAC_ACCESOS_MENU_PRINCIPAL")
            If v_obj_clsLibreria.RevisaErrores(v_dts_respuesta, v_str_glsError, v_str_srcError, v_str_wsError, v_str_metError, v_str_numError) = "0" Then
                Dim str As String = "[" + creaNodo(v_dts_respuesta.Tables(0), 0) + "]"
                v_str_respuestaJson = str
            Else
                v_obj_clsErrores.id = v_str_numError
                v_obj_clsErrores.desc = v_str_glsError
                v_obj_clsErrores.registraErrorEnLog()
                v_str_respuestaJson = v_obj_json.respuestaFormularioJson(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
            End If
        Catch ex As Exception
            v_obj_clsErrores.id = -1000
            v_obj_clsErrores.desc = ex.Message
            v_obj_clsErrores.registraErrorEnLog()
            v_str_respuestaJson = v_obj_json.respuestaFormularioJson(False, v_dts_respuesta.Tables(0), v_obj_clsErrores)
        Finally
            v_dts_respuesta = Nothing
            v_obj_clsParametros.Dispose()
            v_obj_clsParametros = Nothing
            v_obj_wsService.Dispose()
            v_obj_wsService = Nothing
            v_obj_clsLibreria.Dispose()
            v_obj_clsLibreria = Nothing
        End Try
        Return v_str_respuestaJson
    End Function


    Public Function creaNodo(ByVal d As DataTable, ByVal i As Integer, Optional ByVal depth As Integer = -1) As String
        Dim r As String = ""
        Dim leaf As String = ""
        Dim expanded As String = ""
        Dim a As DataRow()
        Dim hijo As String = ""

        a = d.Select("MEME_PADRE = " & i.ToString())
        For x = 0 To a.Count - 1
            If r <> "" Then
                r = r & ","
            End If
            hijo = creaNodo(d, a(x).Item("MEME_NID"), (depth + 1))
            If hijo <> "" Then
                leaf = "false"
                expanded = "true"
            Else
                leaf = "true"
            End If
            r = r & "{text : '" & a(x).Item("MEME_DESCRIPCION") & "'," _
                    & "leaf : " & leaf & ","
            If (expanded <> "") Then
                r = r & "expanded: " & expanded & ","
            End If

            r = r & "url : '" & a(x).Item("MEME_URL") & "'," _
                    & "icon : '../" & a(x).Item("MEME_ICON") & "'," _
                    & "depth : " & (depth + 1).ToString() & "," _
                    & "checked : " & a(x).Item("ACAC_CHECK") & "," _
                    & "id : " & a(x).Item("MEME_NID") & "," _
                    & "children : [" & hijo _
                    & "]}"
        Next x
        Return r
    End Function

End Class
